package com.runjian.rundo.iot.agent.common.manager;

import java.util.List;
import java.util.Map;

import com.runjian.rundo.iot.agent.common.entity.AgentDeviceDTO;

/**
 * IoT设备服务接口
 *
 * @author LiGang
 * @date 2023/4/13 22:02
 */
public interface DeviceManager<T extends AgentDeviceDTO> {

    /**
     * 通过设备识别码获取设备信息
     *
     * @param externalId 设备识别码
     * @return 设备信息
     */
    <T extends AgentDeviceDTO> List<T>  getDeviceByExternalId(String gatewayId, String externalId);

    /**
     * 通过设备识别码获取设备信息
     *
     * @param deviceId 设备Id
     * @return 设备信息
     */
    T getDeviceById(String deviceId);

	List<T> getDeviceListById(String deviceId);

	/**
     * 通过父设备识别码获取设备信息
     *
     * @param gatewayId 父设备识别码
     * @return 设备信息
     */
    List<AgentDeviceDTO> getDeviceMap(String gatewayId,String deviceType);

    /**
     * 添加设备信息到本地缓存中
     *
     * @param deviceDTOS 设备列表
     */
    void addLocalDeviceList(List<T> deviceDTOS);

}
